Recently, voice telephone service has been implemented over the Internet. Improvements made in the transmission of data over the Internet (speed and quality) and Internet bandwidth have made it possible for voice calls to be communicated using the Internet's packet switched architecture and the TCP/IP protocol.
Software is used nowadays on personal computers to enable the two-way transfer of real-time voice information via an Internet data link between two personal computers (each of which is referred to as an end point or client), by incorporating appropriate hardware for driving a microphone and a speaker. Each end point operates simultaneously both as a sender of real time voice data and as a receiver of real time voice data to support a full duplex voice call. Software then allows data compression down to a rate compatible with the end point computer's data connection to an Internet Service Provider (ISP) and encapsulation of the digitized and compressed voice data into a frame which is then sent to the other end point via the Internet.
As a receiver of real time voice data, the end point computer and software reverse the process to recover the information for presentation to the receiver.
The ITU Q.931 standard relates to call signaling and set up, the ITU H.245 standard provides for negotiation of channel usage and compression capabilities between the two endpoints, and the ITU H.323 standard provides for real time voice data between the two end points to occur utilizing UDP/IP to deliver the real time voice data.
A problem associated with the recommendations set by the various standardization bodies such as those set by the ITU-T is that if one of the end points is on a private network behind a network address translation (NAT) firewall, the other endpoint can not send theses (e.g. UDP/IP) frames through the NAT firewall onto the private network for delivery to the private network endpoint. More specifically, ITU Internet telephony standards provide for each endpoint to designate a port number for receipt of the frames representing audio data and to communicate the IP address and designated port for receipt of the audio frames to the other endpoint. Because the private network client does not have a globally unique IP address, a frame sent to such non-globally unique IP address cannot be routed on the Internet and will be lost. Further, even if the private network client were able to identify and designate the IP address of the NAT firewall, the private network client has no means for establishing a port on the NAT firewall for receipt of audio frames.
Because of the recently wide spread use of NAT firewalls which typically provide both IP address translation and port translation of all frames sent from the private network to the Internet, various methods were developed to enable establishing and maintaining internet telephony calls between two clients even if one of them is located on a private network behind a NAT firewall.
U.S. Pat. No. 6,567,405 discloses a method and protocol for Distributed Network Address Translation (“DNAT”), such as in small office/home office networks or other legacy local networks that have multiple network devices using a common external network address to communicate with an external network. The system disclosed includes a port allocation protocol to allocate globally unique ports to network devices on a local network. The globally unique ports are used in a combination network address with a common external network address such as an Internet Protocol (“IP”) address, to identify multiple network devices on a local network to an external network such as the Internet, an intranet, etc. Thus, the DNAT helps overcome the large computation burdens encountered when the translation of the network address is done by a router.
US 20020141384 discloses a system and method for determining a communication path for communicating audio data through an address and port translation device between a first and a second telephony user. According to the method disclosed, a call signaling connection is established between the first telephony user located on a private network and the second telephony user on the Internet, and the call signaling connection is used to provide to the first telephony user an IP address and port number of the second telephony user so as to enable receipt transmitted packets from the first telephony user. When such packets are received by the second telephony user, the source IP address and source port number are extracted and the extracted IP address is compared with an IP address provided by the first telephony user so as to allow the determination that the first telephony user is located on a private network. The second telephony user then utilizes the extracted IP address and port number as the destination IP address and port number for sending the transmission to the first telephony user.
WO 02/073330A2 discloses a method of audio communication utilizing transmissions between a first telephony user located behind a NAT server and a remote second telephony user, where each of the clients utilizes a single port number for both sending and receiving transmissions. By the method disclosed, a transmission is sent from the first telephony user to the second telephony user on a UDP/IP channel utilizing a destination IP address and port number provided by the second telephony user. The second telephony user then extracts the Source IP address and source port number from the received transmission to determine if the first telephony user is located behind a NAT server. If the first telephony user is located behind a NAT server, the extracted source IP address and port number are stored and used to send transmissions to the first telephony user located behind the NAT server.
The disclosures of all references mentioned above and throughout the present specification are hereby incorporated herein by reference.
However, one of the drawbacks of the solutions provided by the prior art, is, that none of them provide an adequate solution to the problem of how to identify two remote telephony users located behind the same NAT or FW (hereinafter “NAT”, and/or “FW” and/or “NAT/FW”) server, in order to create a session between the two of them without using any external proxy (for example when a session is to be held between two telephony users both located at the same remote private network protected by a NAT/FW server).